<script>
    // 求100阶乘
    // 100！= 100 * 99！
    // 99！= 99 * 98！
    // 98！= 98 * 97！
    function fn(n){
        if(n===1) return 1
        return n * fn(n-1)
    }
    // fn(4) 返回 return 4 * fn(3)  此时代码需要等待fn(3)获得结果
    // fn(3) 返回 return 3 * fn(2)  此时代码需要等待fn(2)获得结果
    // fn(2) 返回 return 2 * fn(1)  此时代码需要等待fn(1)获得结果
    // fn(1) 返回 return 1 * fn(0)  此时代码需要等待fn(0)获得结果
    // fn(0) 返回 return 0 * fn(-1)  此时代码需要等待fn(-1)获得结果...
    // 这里函数会一直 "递" ，没有 "归" 的过程
    // 所以需要一个折返点  
    // if(n===1) return 1    表示fn(1) === 1
    var result1 = fn(100)
    console.log(result1)
</script>